#pragma once
#ifndef SMPPCONSTANTS_HPP
#define SMPPCONSTANTS_HPP

#include "SMPPDLLPRFX.hpp"
#include <QByteArray>
#include <QString>

namespace smpp {
namespace constants{

	typedef QByteArray octetString;

	typedef QString CoctetString;

	namespace CommandId{
		static const quint32 CM_GENERIC_NACK					= 0x80000000;
		static const quint32 CM_BIND_RECEIVER				= 0x00000001;
		static const quint32 CM_BIND_RECEIVER_RESP			= 0x80000001;
		static const quint32 CM_BIND_TRANSMITTER				= 0x00000002;
		static const quint32 CM_BIND_TRANSMITTER_RESP		= 0x80000002;
		static const quint32 CM_QUERY_SM						= 0x00000003;
		static const quint32 CM_QUERY_SM_RESP				= 0x80000003;
		static const quint32 CM_SUBMIT_SM					= 0x00000004;
		static const quint32 CM_SUBMIT_SM_RESP				= 0x80000004;
		static const quint32 CM_DELIVER_SM					= 0x00000005;
		static const quint32 CM_DELIVER_SM_RESP				= 0x80000005;
		static const quint32 CM_UNBIND						= 0x00000006;
		static const quint32 CM_UNBIND_RESP					= 0x80000006;
		static const quint32 CM_REPLACE_SM					= 0x00000007;
		static const quint32 CM_REPLACE_SM_RESP				= 0x80000007;
		static const quint32 CM_CANCEL_SM					= 0x00000008;
		static const quint32 CM_CANCEL_SM_RESP				= 0x80000008;
		static const quint32 CM_BIND_TRANSCEIVER				= 0x00000009;
		static const quint32 CM_BIND_TRANSCEIVER_RESP		= 0x80000009;
		static const quint32 CM_OUTBIND						= 0x0000000B;
		static const quint32 CM_ENQUIRE_LINK					= 0x00000015;
		static const quint32 CM_ENQUIRE_LINK_RESP			= 0x80000015;
		static const quint32 CM_SUBMIT_MULTI					= 0x00000021;
		static const quint32 CM_SUBMIT_MULTI_RESP			= 0x80000021;
		static const quint32 CM_ALERT_NOTIFICATION			= 0x00000102;
		static const quint32 CM_DATA_SM						= 0x00000103;
		static const quint32 CM_DATA_SM_RESP					= 0x80000103;
		static const quint32 CM_BROADCAST_SM					= 0x00000111;
		static const quint32 CM_BROADCAST_SM_RESP			= 0x80000111;
		static const quint32 CM_QUERY_BROADCAST_SM			= 0x00000112;
		static const quint32 CM_QUERY_BROADCAST_SM_RESP		= 0x80000112;
		static const quint32 CM_CANCEL_BROADCAST_SM			= 0x00000113;
		static const quint32 CM_CANCEL_BROADCAST_SM_RESP		= 0x80000113;
	}

	namespace ErrorCode{
		static const quint32 ESME_ROK						= 0x00000000;
		static const quint32 ESME_RINVMSGLEN					= 0x00000001;
		static const quint32 ESME_RINVCMDLEN					= 0x00000002;
		static const quint32 ESME_RINVCMDID					= 0x00000003;
		static const quint32 ESME_RINVBNDSTS					= 0x00000004;
		static const quint32 ESME_RALYBND					= 0x00000005;
		static const quint32 ESME_RINVPRTFLG					= 0x00000006;
		static const quint32 ESME_RINVREGDLVFLG				= 0x00000007;
		static const quint32 ESME_RSYSERR					= 0x00000008;
		static const quint32 ESME_RINVSRCADR					= 0x0000000A;
		static const quint32 ESME_RINVDSTADR					= 0x0000000B;
		static const quint32 ESME_RINVMSGID					= 0x0000000C;
		static const quint32 ESME_RBINDFAIL					= 0x0000000D;
		static const quint32 ESME_RINVPASWD					= 0x0000000E;
		static const quint32 ESME_RINVSYSID					= 0x0000000F;
		static const quint32 ESME_RCANCELFAIL				= 0x00000011;
		static const quint32 ESME_RREPLACEFAIL				= 0x00000013;
		static const quint32 ESME_RMSGQFUL					= 0x00000014;
		static const quint32 ESME_RINVSERTYP					= 0x00000015;
		static const quint32 ESME_RINVNUMDESTS				= 0x00000033;
		static const quint32 ESME_RINVDLNAME					= 0x00000034;
		static const quint32 ESME_RINVDESTFLAG				= 0x00000040;
		static const quint32 ESME_RINVSUBREP					= 0x00000042;
		static const quint32 ESME_RINVESMCLASS				= 0x00000043;
		static const quint32 ESME_RCNTSUBDL					= 0x00000044;
		static const quint32 ESME_RSUBMITFAIL				= 0x00000045;
		static const quint32 ESME_RINVSRCTON					= 0x00000048;
		static const quint32 ESME_RINVSRCNPI					= 0x00000049;
		static const quint32 ESME_RINVDSTTON					= 0x00000050;
		static const quint32 ESME_RINVDSTNPI					= 0x00000051;
		static const quint32 ESME_RINVSYSTYP					= 0x00000053;
		static const quint32 ESME_RINVREPFLAG				= 0x00000054;
		static const quint32 ESME_RINVNUMMSGS				= 0x00000055;
		static const quint32 ESME_RTHROTTLED					= 0x00000058;
		static const quint32 ESME_RINVSCHED					= 0x00000061;
		static const quint32 ESME_RINVEXPIRY					= 0x00000062;
		static const quint32 ESME_RINVDFTMSGID				= 0x00000063;
		static const quint32 ESME_RX_T_APPN					= 0x00000064;
		static const quint32 ESME_RX_P_APPN					= 0x00000065;
		static const quint32 ESME_RX_R_APPN					= 0x00000066;
		static const quint32 ESME_RQUERYFAIL					= 0x00000067;
		static const quint32 ESME_RINVTLVSTREAM				= 0x000000C0;
		static const quint32 ESME_RTLVNOTALLWD				= 0x000000C1;
		static const quint32 ESME_RINVTLVLEN					= 0x000000C2;
		static const quint32 ESME_RMISSINGTLV				= 0x000000C3;
		static const quint32 ESME_RINVTLVVAL					= 0x000000C4;
		static const quint32 ESME_RDELIVERYFAILURE			= 0x000000FE;
		static const quint32 ESME_RUNKNOWNERR				= 0x000000FF;
		static const quint32 ESME_RSERTYPUNAUTH				= 0x00000100;
		static const quint32 ESME_RPROHIBITED				= 0x00000101;
		static const quint32 ESME_RSERTYPUNAVAIL				= 0x00000102;
		static const quint32 ESME_RSERTYPDENIED				= 0x00000103;
		static const quint32 ESME_RINVDCS					= 0x00000104;
		static const quint32 ESME_RINVSRCADDRSUBUNIT			= 0x00000105;
		static const quint32 ESME_RINVDSTADDRSUBUNIT			= 0x00000106;
		static const quint32 ESME_RINVBCASTFREQINT			= 0x00000107;
		static const quint32 ESME_RINVBCASTALIAS_NAME		= 0x00000108;
		static const quint32 ESME_RINVBCASTAREAFMT			= 0x00000109;
		static const quint32 ESME_RINVNUMBCAST_AREAS			= 0x0000010A;
		static const quint32 ESME_RINVBCASTCNTTYPE			= 0x0000010B;
		static const quint32 ESME_RINVBCASTMSGCLASS			= 0x0000010C;
		static const quint32 ESME_RBCASTFAIL					= 0x0000010D;
		static const quint32 ESME_RBCASTQUERYFAIL			= 0x0000010E;
		static const quint32 ESME_RBCASTCANCELFAIL			= 0x0000010F;
		static const quint32 ESME_RINVBCAST_REP				= 0x00000110;
		static const quint32 ESME_RINVBCASTSRVGRP			= 0x00000111;
		static const quint32 ESME_RINVBCASTCHANIND			= 0x00000112;
		static const quint32 ESME_ERRDECSEQNUM				= 0x00000400;
		static const quint32 ESME_ERRDECERRSTCODE			= 0x00000401;
	}

	namespace TLVtags{
		static const quint16 TAG_DEST_ADDR_SUBUNIT				= 0x0005;		// GSM
		static const quint16 TAG_DEST_NETWORK_TYPE				= 0x0006;		// Generic
		static const quint16 TAG_DEST_BEARER_TYPE				= 0x0007;		// Generic
		static const quint16 TAG_DEST_TELEMATICS_ID				= 0x0008;		// GSM
		static const quint16 TAG_DEST_PORT						= 0x020B;
		static const quint16 TAG_SOURCE_ADDR_SUBUNIT				= 0x000D;		// GSM
		static const quint16 TAG_SOURCE_NETWORK_TYPE				= 0x000E;		// Generic
		static const quint16 TAG_SOURCE_BEARER_TYPE				= 0x000F;		// Generic
		static const quint16 TAG_SOURCE_TELEMATICS_ID			= 0x0010;		// GSM
		static const quint16 TAG_QOS_TIME_TO_LIVE				= 0x0017;		// Generic
		static const quint16 TAG_PAYLOAD_TYPE					= 0x0019;		// Generic
		static const quint16 TAG_ADDITIONAL_STATUS_INFO_TEXT		= 0x001D;		// Generic
		static const quint16 TAG_RECEIPTED_MESSAGE_ID			= 0x001E;		// Generic
		static const quint16 TAG_MS_MSG_WAIT_FACILITIES			= 0x0030;		// GSM
		static const quint16 TAG_PRIVACY_INDICATOR				= 0x0201;		// CDMA, TDMA
		static const quint16 TAG_SOURCE_SUBADDRESS				= 0x0202;		// CDMA, TDMA
		static const quint16 TAG_DEST_SUBADDRESS					= 0x0203;		// CDMA, TDMA
		static const quint16 TAG_USER_MESSAGE_REFERENCE			= 0x0204;		// Generic
		static const quint16 TAG_USER_RESPONSE_CODE				= 0x0205;		// CDMA, TDMA
		static const quint16 TAG_SOURCE_PORT						= 0x020A;		// Generic
		static const quint16 TAG_DESTINATION_PORT				= 0x020B;		// Generic
		static const quint16 TAG_SAR_MSG_REF_NUM					= 0x020C;		// Generic
		static const quint16 TAG_LANGUAGE_INDICATOR				= 0x020D;		// CDMA, TDMA
		static const quint16 TAG_SAR_TOTAL_SEGMENTS				= 0x020E;		// Generic
		static const quint16 TAG_SAR_SEGMENT_SEQNUM				= 0x020F;		// Generic
		static const quint16 TAG_SC_INTERFACE_VERSION			= 0x0210;		// Generic
		static const quint16 TAG_CALLBACK_NUM_PRES_IND			= 0x0302;		// TDMA
		static const quint16 TAG_CALLBACK_NUM_ATAG				= 0x0303;		// TDMA
		static const quint16 TAG_NUMBER_OF_MESSAGES				= 0x0304;		// CDMA
		static const quint16 TAG_CALLBACK_NUM					= 0x0381;		// CDMA, TDMA, GSM, iDEN
		static const quint16 TAG_CONGESTION_STATE				= 0x0428;
		static const quint16 TAG_DPF_RESULT						= 0x0420;		// Generic
		static const quint16 TAG_SET_DPF							= 0x0421;		// Generic
		static const quint16 TAG_MS_AVAILABILITY_STATUS			= 0x0422;		// Generic
		static const quint16 TAG_NETWORK_ERROR_CODE				= 0x0423;		// Generic
		static const quint16 TAG_MESSAGE_PAYLOAD					= 0x0424;		// Generic
		static const quint16 TAG_DELIVERY_FAILURE_REASON			= 0x0425;		// Generic
		static const quint16 TAG_MORE_MESSAGES_TO_SEND			= 0x0426;		// GSM
		static const quint16 TAG_MESSAGE_STATE					= 0x0427;		// Generic
		static const quint16 TAG_USSD_SERVICE_OP					= 0x0501;		// GSM (USSD)
		static const quint16 TAG_DISPLAY_TIME					= 0x1201;		// CDMA, TDMA
		static const quint16 TAG_SMS_SIGNAL						= 0x1203;		// TDMA
		static const quint16 TAG_MS_VALIDITY						= 0x1204;		// CDMA, TDMA
		static const quint16 TAG_ALERT_ON_MESSAGE_DELIVERY		= 0x130C;		// CDMA
		static const quint16 TAG_ITS_REPLY_TYPE					= 0x1380;		// CDMA
		static const quint16 TAG_ITS_SESSION_INFO				= 0x1383;		// CDMA
		static const quint16 TAG_BROADCAST_CHANNEL_INDICATOR		= 0x0600;		// GSM
		static const quint16 TAG_BROADCAST_CONTENT_TYPE			= 0x0601;		// CDMA, TDMA, GSM
		static const quint16 TAG_BROADCAST_CONTENT_TYPE_INFO		= 0x0602;		// CDMA, TDMA
		static const quint16 TAG_BROADCAST_MESSAGE_CLASS			= 0x0603;		// GSM
		static const quint16 TAG_BROADCAST_REP_NUM				= 0x0604;		// GSM
		static const quint16 TAG_BROADCAST_FREQUENCY_INTERVAL	= 0x0605;		// CDMA, TDMA, GSM
		static const quint16 TAG_BROADCAST_AREA_IDENTIFIER		= 0x0606;		// CDMA, TDMA, GSM
		static const quint16 TAG_BROADCAST_ERROR_STATUS			= 0x0607;		// CDMA, TDMA, GSM
		static const quint16 TAG_BROADCAST_AREA_SUCCESS			= 0x0608;		// GSM
		static const quint16 TAG_BROADCAST_END_TIME				= 0x0609;		// CDMA, TDMA, GSM
		static const quint16 TAG_BROADCAST_SERVICE_GROUP			= 0x060A;		// CDMA, TDMA
		static const quint16 TAG_BILLING_IDENTIFICATION			= 0x060B;		// Generic
		static const quint16 TAG_SOURCE_NETWORK_ID				= 0x060D;		// Generic
		static const quint16 TAG_DEST_NETWORK_ID					= 0x060E;		// Generic
		static const quint16 TAG_SOURCE_NODE_ID					= 0x060F;		// Generic
		static const quint16 TAG_DEST_NODE_ID					= 0x0610;		// Generic
		static const quint16 TAG_DEST_ADDR_NP_RESOLUTION			= 0x0611;		// CDMA, TDMA (US Only)
		static const quint16 TAG_DEST_ADDR_NP_INFORMATION		= 0x0612;		// CDMA, TDMA (US Only)
		static const quint16 TAG_DEST_ADDR_NP_COUNTRY			= 0x0613;		// CDMA, TDMA (US Only)
	}

	namespace DestFlag{
		static const quint8 UNKNOWN								= 0x00;
		static const quint8 SME_ADDRESS							= 0x01;
		static const quint8 DISTR_LIST_NAME						= 0x02;
	}

	namespace InterfaceVersion{
		static const quint8 SMPP_VER_0_0							 = 0x00;
		static const quint8 SMPP_VER_3_3							 = 0x33;
		static const quint8 SMPP_VER_3_4							 = 0x34;
		static const quint8 SMPP_VER_5_0							 = 0x50;
	}
}
}

#endif
